package com.youxue.service;

import com.youxue.entity.Order;

import java.util.List;

/**
 * Created by 15c on 2018/1/23.
 */
public interface OrderService {
    /**
     * 用户创建订单，默认为待支付
     *
     * @param order
     * @return
     */
    int addOrder(Order order);

    /**
     * 完成一个订单支付
     * @param orderId
     * @return
     */
    int payAOrder(Integer orderId);

    /**
     * 删除一个订单,其实是将该订单orderStatus修改为2；表示已经支付且被用户删除的订单
     *
     * @param  orderId
     * @return
     */
    int reviseOrderStatus(Integer orderId);
    /**
     * 删除一个用户未支付的订单
     * @param orderId
     * @return
     */
    int deleteOrder(Integer orderId);



    /**
     * 展示一个用户所有订单（orderStatus=0：已支付；orderStatus=1：未支付；默认都为1，未支付）
     * @param userId
     * @param orderStatus
     * @return
     */
    List<Order> showAUserAllOrder(Integer userId, Integer orderStatus);

    /**
     * 查询一个用户所有订单（支付与未支付）
     * @param userId
     * @return
     */
    List<Order> showAUserAllOrders(Integer userId);

    /**
     * 展示一个以前创建的详情订单()
     * @param orderId 订单id
     * @return
     */
    Order showAOldOrderInfo(Integer orderId);

    /**
     * 展示一个新创建的订单，为用户确认并选择是否马上完成支付
     * @param userId 用户id
     * @return
     */
    Order showANowOrderInfo(Integer userId);

    /**
     * 通过userid，classid查询其唯一标识的订单
     * @param userId
     * @param classId
     * @return
     */
    Order showAOrder(Integer userId, Integer classId);

    /**
     * 查询是否存在该课程、用户订单
     * @param userId
     * @param classId
     * @return
     */
    Order showAOrderInfo(Integer userId, Integer classId);
    /**
     * 通过userid，classid查询其唯一标识的未支付订单
     * @param userId
     * @param classId
     * @return
     */
    Order showAOrderNo(Integer userId, Integer classId);

    /**
     * 查询一个用户所购买的课程列表
     * @param userId
     * @return
     */
    List<Order> showAUserBuyClass(Integer userId);

    /**
     * 订单支付失败回滚订单状态为未支付=1
     * @param orderId
     * @return
     */
    int payAOrderRollback(Integer orderId);

    /**
     * 通过orderId修改ClassCondition=0（表示用户删除该购买记录）
     * @param orderId
     * @return
     */
    int reviseOrderClassCondition(Integer orderId);
}
